package com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.employee;

import com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.employee.dto.BusinessContractExpiresEmployeeListCloudDto;
import com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.employee.dto.BusinessProbationaryPeriodExpiresEmployeeListCloudDto;
import com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.employee.dto.BusinessRecentBirthdaysEmployeeListCloudDto;
import com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.employee.param.BusinessContractExpiresEmployeeListCloudParam;
import com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.employee.param.BusinessProbationaryPeriodExpiresEmployeeListCloudParam;
import com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.employee.param.BusinessRecentBirthdaysEmployeeListCloudParam;
import io.swagger.annotations.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 员工提醒
 *
 * @author  liuxiawang
 * @Date 5/24/22 10:36 PM
 * @Location shenzhen.china
 */
@Api(tags = {"【BUSINESS】Employee Remind Management"})
@RestController
@FeignClient(value = "YOUKEYI-DDY-CLOUD-APPLICATION-BUSINESS", fallback = BusinessEmployeeRemindCloudServiceFallback.class)
@RequestMapping("/business/employee/remind")
public interface BusinessEmployeeRemindCloudService {

    // 查询近期生日的员工
    @ApiOperation(value = "Query Recent Birthdays Employee List", authorizations = {@Authorization("com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.employee.BusinessEmployeeRemindCloudService.recentBirthdaysEmployeeList")})
    @ApiResponse(code = 200, message = "data Property in Response Body", response = BusinessRecentBirthdaysEmployeeListCloudDto.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "param", paramType = "query", value = "Param of Query Recent Birthdays Employee List", dataType = "BusinessRecentBirthdaysEmployeeListCloudParam", dataTypeClass = BusinessRecentBirthdaysEmployeeListCloudParam.class),
    })
    @GetMapping("/birthdays")
    public abstract BusinessRecentBirthdaysEmployeeListCloudDto recentBirthdaysEmployeeList(BusinessRecentBirthdaysEmployeeListCloudParam param);




    // 查询试用期快到期的员工
    @ApiOperation(value = "Query Probationary Period Expires Employee List", authorizations = {@Authorization("com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.employee.BusinessEmployeeRemindCloudService.probationaryPeriodExpiresEmployeeList")})
    @ApiResponse(code = 200, message = "data Property in Response Body", response = BusinessProbationaryPeriodExpiresEmployeeListCloudDto.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "param", paramType = "query", value = "Param of Query Probationary Period Expires Employee List", dataType = "BusinessProbationaryPeriodExpiresEmployeeListCloudParam", dataTypeClass = BusinessProbationaryPeriodExpiresEmployeeListCloudParam.class),
    })
    @GetMapping("/probationary/period")
    public abstract BusinessProbationaryPeriodExpiresEmployeeListCloudDto probationaryPeriodExpiresEmployeeList(BusinessProbationaryPeriodExpiresEmployeeListCloudParam param);




    // 查询合同快到期的员工
    @ApiOperation(value = "Query Contract Expires Employee List", authorizations = {@Authorization("com.youkeyi.ddy.cloud.common.api.application.business.hr.employee.employee.BusinessEmployeeRemindCloudService.contractExpiresEmployeeList")})
    @ApiResponse(code = 200, message = "data Property in Response Body", response = BusinessContractExpiresEmployeeListCloudDto.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "param", paramType = "query", value = "Param of Query Contract Expires Employee List", dataType = "BusinessContractExpiresEmployeeListCloudParam", dataTypeClass = BusinessContractExpiresEmployeeListCloudParam.class),
    })
    @GetMapping("/contract")
    public abstract BusinessContractExpiresEmployeeListCloudDto contractExpiresEmployeeList(BusinessContractExpiresEmployeeListCloudParam param);

}
